|
(*~\Глагол\Отделы\Поле~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
(**) ОТДЕЛ ПолеСВосклицанием;
(*============================================================================*
* НАЗНАЧЕНИЕ: вывод записки
*============================================================================*)
ИСПОЛЬЗУЕТ
Надел,
Поле,
Подложка,
Записка,
Черта,
Кнопка,
Ввод ИЗ "..\Обмен\";
(******************************************************************************)
ЗАДАЧА Приём(поле:Поле.Доступ; посылка+:Ввод.Посылка);
(* получить и обработать управляющие послания *)
УКАЗ
ДЛЯ посылка ВИДА
| Ввод.ОтКлавиш:
ЕСЛИ (посылка.код = 1BH) (* Esc *)
ИЛИ (посылка.код = 79H) (* F10 *)
ТО
поле.состояние:=Поле.сДалее;
посылка.код:=0
КОН
| Кнопка.Посылка:
поле.состояние:=посылка.кнопка.действие
ИНАЧЕ
КОН
КОН Приём;
(******************************************************************************)
ЗАДАЧА Выполнить-(
(* Цель: осуществить вывод текста *)
(******************************************************************************)
(* До: *)
заголовок-:ЦЕПЬ; (* заголовок подложки *)
строк:ЦЕЛ; (* желаемая высота текста *)
колонок:ЦЕЛ; (* желаемая ширина текста *)
окружение:Поле.Доступ;(* окружающее поле *)
текст-:ЦЕПЬ (* выводимый текст *)
);
(******************************************************************************)
ПОСТ
(* цепочки для кнопок *)
цДалее="[ Далее ]";
длДалее=ДЛИНА(цДалее);
ПЕР
поле:Поле.Доступ;
подложка:Подложка.Доступ;
записка:Записка.Доступ;
черта:Черта.Доступ;
кнДалее:Кнопка.Доступ;
УКАЗ
(* вычисление местоположения кнопок *)
ЕСЛИ длДалее > колонок ТО
колонок:=длДалее
КОН;
(* создаём поле *)
поле:=Поле.Создать(0,0,строк+4,колонок+4,окружение,ВКЛ,Приём);
(* создаём наделы *)
подложка:=Подложка.Создать(0,0,0,0,заголовок);
записка:=Записка.Создать(1,2,-3,-2,текст);
черта:=Черта.Создать(-3,0,1,0);
кнДалее:=Кнопка.Создать(-2,1+(колонок-длДалее+1) ДЕЛИТЬ 2,цДалее,Поле.сДалее,ВКЛ);
(* добавляем наделы в порядке отрисовки и получения ввода *)
Поле.ДобавитьНадел(поле,подложка);
Поле.ДобавитьНадел(поле,записка);
Поле.ДобавитьНадел(поле,черта);
Поле.ДобавитьНадел(поле,кнДалее);
(* основная работа *)
Поле.Рисовать(поле);
ПОВТОРЯТЬ
Поле.Проверить(поле)
ДО поле.состояние # Поле.сРабота;
(* восстанавливаем окружение *)
Поле.Рисовать(окружение)
КОН Выполнить;
КОН ПолеСВосклицанием.
|
|